A Classical Catch/Throw Calculus with Tag Abstractions and its Strong Normalizability
نویسندگان
چکیده
ions and its Strong Normalizability Yukiyoshi Kameyama and Masahiko Sato Department of Information Science, Kyoto University fkameyama,[email protected] Abstract. The catch and throw constructs in Common Lisp provides a means to implement non-local exits. Nakano proposed a calculus L c=t which has inference rules for the catch and throw constructs, and whose types correspond to the intuitionistic propositional logic. He introduced the tag-abstraction/application mechanism into L c=t , which is useful to approximately represent the dynamic behavior of tags. This paper examines the calculus LK c=t , a classicalized version of L c=t . In LK c=t , we can write many programming examples which are not expressible in L c=t , moreover, algorithmic contents can be extracted from classical proofs in LK c=t . We also prove several interesting properties of LK c=t including the strong normalizability. We point out that, if we naively apply the well-known reducibility method, the tag abstraction/application mechanism is problematic. By introducing a missing elimination rule, we can successfully prove the strong normalizability of LK c=t . The catch and throw constructs in Common Lisp provides a means to implement non-local exits. Nakano proposed a calculus L c=t which has inference rules for the catch and throw constructs, and whose types correspond to the intuitionistic propositional logic. He introduced the tag-abstraction/application mechanism into L c=t , which is useful to approximately represent the dynamic behavior of tags. This paper examines the calculus LK c=t , a classicalized version of L c=t . In LK c=t , we can write many programming examples which are not expressible in L c=t , moreover, algorithmic contents can be extracted from classical proofs in LK c=t . We also prove several interesting properties of LK c=t including the strong normalizability. We point out that, if we naively apply the well-known reducibility method, the tag abstraction/application mechanism is problematic. By introducing a missing elimination rule, we can successfully prove the strong normalizability of LK c=t .
منابع مشابه
Strong normalizability of the non-deterministic catch/throw calculi
The catch/throw mechanism in Common Lisp provides a simple control mechanism for non-local exit. We study typed calculi by Nakano and Sato which formalize the catch/throw mechanism. These calculi correspond to classical logic through the Curry-Howard isomorphism, and one of their characteristic points is that they have nondeterministic reduction rules. These calculi can represent various comput...
متن کاملA confluent λ-calculus with a catch/throw mechanism
We derive a confluent λ-calculus with a catch/throw mechanism (called λct-calculus) from M. Parigot’s λμ-calculus. We also present several translations from one calculus into the other which are morphisms for the reduction. We use them to show that the λct-calculus is a retract of λμ-calculus (these calculi are isomorphic if we consider only convertibility). As a by-product, we obtain the subje...
متن کاملConfluency and Strong Normalizability of Call-by-Value λμ-Calculus
This paper proves the confluency and the strong normalizability of the call-by-value λμcalculus with the domain-free style. The confluency of the system is proved by improving the parallel reduction method of Baba, Hirokawa and Fujita. The strong normalizability is proved by using the modified CPS-translation, which preserves the typability and the reduction relation. This paper defines the cla...
متن کاملA call-by-value lambda-calculus with lists and control
Calculi with control operators have been studied to reason about control in programming languages and to interpret the computational content of classical proofs. To make these calculi into a real programming language, one should also include data types. As a step into that direction, this paper defines a simply typed call-by-value λ -calculus with the control operators catch and throw, a data t...
متن کاملA call-by-value λ -calculus with lists and control
Calculi with control operators have been studied to reason about control in programming languages and to interpret the computational content of classical proofs. To make these calculi into a real programming language, one should also include data types. As a step into that direction, this paper defines a simply typed call-by-value λ -calculus with the control operators catch and throw, a data t...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998